table of contents
ENVIRON(5) | Podręcznik programisty Linuksa | ENVIRON(5) |
NAZWA¶
environ - środowisko użytkownika
SKŁADNIA¶
extern char **environ;
OPIS¶
Zmienna environ wskazuje na tablicę łańcuchów zwaną ,,środowiskiem''. (Zmienna ta musi być zdefiniowana w programie użytkownika, jednakże jest ona zadeklarowana w pliku nagłówkowym unistd.h, w przypadku gdy plik ten pochodzi z libc4 lub libc5 oraz w przypadku gdy pochodzi on z glibc a zdefiniowano _GNU_SOURCE. Ta tablica łańcuchów udostępniana jest procesowi przez funkcję exec(3) podczas jego uruchamiania. Zgodnie z konwencją łańcuchy znaków mają postać ,,nazwa=wartość''. Typowe przykłady to:
- USER
- Nazwa zalogowanego użytkownika (wykorzystywana przez niektóre programy wywodzące się z BSD).
- LOGNAME
- Nazwa zalogowanego użytkownika (wykorzystywana przez niektóre programy wywodzące się z Systemu V).
- HOME
- Katalog domowy użytkownika, zmienna ustawiana przez program login(1) na podstawie informacji z pliku passwd(5).
- LANG
- Nazwa lokalizacji jaka ma być stosowana dla wszystkich kategorii lokalizacji, jeśli lokalizacja nie została narzucona przez zmienną LC_ALL lub inne bardziej szczegółowe zmienne, jak LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME, por. locale(5).
- PATH
- Ciąg katalogów które sh(1) oraz wiele innych programów przeszukuje w poszukiwaniu plików, których nazwa nie zawiera pełnej ścieżki dostępu. Poszczególne katalogi są rozdzielane znakiem ,,:''. (Podobnie, CDPATH jest używane przez niektóre powłoki do poszukiwania katalogu docelowego dla polecenia zmiany katalogu, a MANPATH jest używane przez man(1) do poszukiwania stron podręcznika, itd.)
- PWD
- Aktualny katalog roboczy. Ustawiane przez niektóre powłoki.
- SHELL
- Nazwa powłoki zgłoszeniowej użytkownika.
- TERM
- Rodzaj terminala dla którego system ma przygotowywać wyjście.
- PAGER
- Wybrane przez użytkownika narzędzie do wyświetlania plików tekstowych.
- EDITOR/VISUAL
- Wybrane przez użytkownika narzędzie do edycji plików tekstowych.
- BROWSER
- Wybrane przez użytkownika narzędzie do sprawdzania adresów URL. Jest to ciąg rozdzielonych dwukropkami poleceń wywołujących przegladarki. Zobacz http://www.tuxedo.org/~esr/BROWSER/ .
Dalsze nazwy mogą być umieszczane w środowisku za pomocą polecenia export i ,,nazwa=wartość'' w przypadku stosowania powłoki typu sh(1) lub polecenia setenv w przypadku powłoki typu csh(1). W środowisku mogą być również umieszczane argumenty w momencie wykonywania funkcji exec(3). Program napisany w C może manipulować środowiskiem za pomocą funkcji getenv(3), putenv(3), setenv(3) i unsetenv(3).
Trzeba zauważyć, że obecność lub wartości pewnych zmiennych środowiska mają wpływ na zachowanie wielu programów i funkcji bibliotecznych. Przypadkowy zbiór:
Zmienne LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES, itd. wpływają na obsługę lokalizacji, por. locale(5).
TMPDIR wpływa na prefiks ścieżki w nazwach tworzonych przez tmpnam(3) i inne funkcje, katalog tymczasowy wykorzystywany przez sort(1) i inne programy, itd.
LD_LIBRARY_PATH, LD_PRELOAD i inne zienne LD_* wpływają na zachowanie programu ładującego/konsolidatora bibliotek dynamicznych.
POSIXLY_CORRECT powoduje, że niektóre programy i funkcje biblioteczne przestrzegają zaleceń POSIX.
Na zachowanie malloc(3) wpływają zmienne MALLOC_*.
Zmienna HOSTALIASES określa nazwę pliku zawierającego aliasy, z których ma korzystać gethostbyname(3).
TZ i TZDIR podają informacje o strefie czasowej wykorzystywaną przez tzset(3) i przez funkcje takie jak ctime(), localtime(), mktime(), strftime(). Zobacz także tzselect(1).
TERMCAP podaje informacje o tym, jak adresować określony terminal (lub podaje nazwę pliku zawierającego te informacje).
COLUMNS i LINES mówią aplikacjom o rozmiarze okna, ewentualnie narzucając wartości inne niż rzeczywiste rozmiary.
PRINTER lub LPDEST mogą określać drukarkę, która powinna być używana. Zobacz lpr(1).
Itd.
BŁĘDY¶
Oczywiści istnieje tu ryzyko naruszenia bezpieczeństwa. Wiele poleceń systemowych zostało oszukanych w celu wyrządzenia szkody przez użytkownika, który nadał nietypowe wartości zmiennym IFS lub LD_LIBRARY_PATH.
Istnieje również ryzyko skażenia przestrzeni nazw. Programy takie, jak make i autoconf pozwalają na nadpisywanie domyślnych nazw programów narzędziowych poprzez środowisko zawierające zmienne o nazwach podobnych do nazw tych programów, ale składających sie wyłącznie z wielkich liter. Zatem użuwa się CC Do określenia pożądanego kompilatora C (i podobnie MAKE, AR, AS, FC, LD, LEX, RM, YACC, itd.). Jednakże, w niektórych tradycyjnych zastosowaniach takie zmienne środowiskowe podają opcje dla programów zamiast ścieżki. Zatem mamy MORE, LESS i GZIP. Takie zastosowanie jest traktowane jako błędne i należy go unikać w nowych programach. Autorzy programu gzip powinni rozważyć zmianę nazwy swojej opcji na GZIP_OPT.
ZOBACZ TAKŻE¶
login(1), sh(1), bash(1), csh(1), tcsh(1), execve(2), exec(3), getenv(3), putenv(3), setenv(3), clearenv(3), unsetenv(3), locale(5)
2001-12-14 | Linux |